Source code for src.compare
#python imports
from os import path
from datetime import datetime
from itertools import izip_longest, izip
from re import sub
#third-party
import cardsharp as cs
#src
from .log import Log
from .configuration import config
def _row_test(i, r1, r2, vars, log, segment):
err = 'Row %i does not match after saving and loading' % i
if segment != 'summary':
region = 'cstate' if 'cstate' in vars else 'astate'
for var in vars:
if r1[var.name] != r2[var.name]:
if var.name in ('aori_invalid', 'cori_invalid'):
continue
if segment == 'summary': #if summary difference report
log.write_compare('diff', [int(r1['casenum']), var.name, str(r1[var.name]), str(r2[var.name])], 78)
else:
log.write_compare('diff', [r1['id'], r1[region], r1['rapstatex'], var.name, r1[var.name], str(r2[var.name])], 77)
[docs]def compare(ds1, ds2, **kw):
'''
ds1: one of two datasets to compare
ds2: two of two datasets to compare
out_format: the format for the output to log files,
var = only output variable difference (default)
row = output full row difference
verbose: print output default = False
'''
log = Log(**kw)
#validate same number of variables in both datasets
if len(ds1.variables) != len(ds2.variables):
print 'Number of variables do not match, unable to compare'
#compare all rows of the datasets
for i, (r1, r2) in enumerate(izip_longest(ds1, ds2)):
assert r1 is not None and r2 is not None, "Datasets have unequal number of rows"
_row_test(i, r1, r2, ds1.variables, log, kw['segment'])